package chalmersbot;
import chalmersbot.Absyn.*;
/** BNFC-Generated Abstract Visitor */
public class AbstractVisitor<R,A> implements AllVisitor<R,A> {
/* Sentence */
    public R visit(chalmersbot.Absyn.QSentence p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.ISentenceD p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.ISentence p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Sentence p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* IPhrase */
    public R visit(chalmersbot.Absyn.ISubNr p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.ISub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.ISubIsSub p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.IPhrase p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* QPhrase */
    public R visit(chalmersbot.Absyn.QPhraseSimple p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.QPhrase p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Phrase */
    public R visit(chalmersbot.Absyn.QYNVerbSubVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QYNVerbSubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QYNIsSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QYNIsSubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordIsSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordIsSubVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordIsSubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordSubVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordSubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordSubIsSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordSubIsSubVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordVerbSubVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordVerbSubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QInWhichSubIsSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QInWhichSubIsSubVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QInWhichSubIsSubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QInWhichSubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QInWhichSubVerbSubVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QInWhichSubVerbSubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QHowManySubVerbSub p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QHowManySubVerbSubVerb p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Phrase p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* QWInW */
    public R visit(chalmersbot.Absyn.QWInW_1 p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWInW_2 p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.QWInW p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* QWHow */
    public R visit(chalmersbot.Absyn.QWHowMany p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.QWHow p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* QWord */
    public R visit(chalmersbot.Absyn.QWordQWordToken p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordQWhichToken p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordQHowToken p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.QWordQWhatToken p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.QWord p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* AuxVerb */
    public R visit(chalmersbot.Absyn.AuxiliaryVerb p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.AuxVerb p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* IsVrb */
    public R visit(chalmersbot.Absyn.IsVerb p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.IsVrb p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Vrb */
    public R visit(chalmersbot.Absyn.RegularVerb p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Vrb p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* ToWrd */
    public R visit(chalmersbot.Absyn.ToWord p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.ToWrd p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* GoingWrd */
    public R visit(chalmersbot.Absyn.GoingWord p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.GoingWrd p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Verb */
    public R visit(chalmersbot.Absyn.VerbBasic p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.VerbIsVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.VerbGointTo p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.VerbGoing p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.VerbTo p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Verb p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* VerbWord */
    public R visit(chalmersbot.Absyn.VerbWordVerb p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.VerbWordAux p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.VerbWordAuxVerb p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.VerbWord p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* InWrd */
    public R visit(chalmersbot.Absyn.InWord p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.InWrd p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Preposition */
    public R visit(chalmersbot.Absyn.Prepositions p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.PrepositionsTok p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Preposition p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* NumberRule */
    public R visit(chalmersbot.Absyn.NumberRuleNumberDigitToken p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.NumberRuleNumberTextToken p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.NumberRule p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Credit */
    public R visit(chalmersbot.Absyn.CreditNrEC p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.CreditNrE p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.CreditNrC p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.CreditE p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.CreditEC p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.CreditC p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Credit p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* CreditWrd */
    public R visit(chalmersbot.Absyn.CreditWord p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.CreditWrd p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Ects */
    public R visit(chalmersbot.Absyn.EctsWord p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Ects p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* CreditNr */
    public R visit(chalmersbot.Absyn.CreditNrCreditNrToken p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.CreditNrNumberDigitToken p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.CreditNr p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Adjective */
    public R visit(chalmersbot.Absyn.AdjectiveAdjectivesToken p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.AdjectiveManyWrd p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Adjective p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* ManyWrd */
    public R visit(chalmersbot.Absyn.ManyWord p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.ManyWrd p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* SpecialWordToken */
    public R visit(chalmersbot.Absyn.SpecialWordTokenSNounSToken p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SpecialWordTokenSNounEsToken p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.SpecialWordToken p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* NameRule */
    public R visit(chalmersbot.Absyn.NameRuleNameToken p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.NameRule p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* Subject */
    public R visit(chalmersbot.Absyn.SubjectToList p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.Subject p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* SubjectLst */
    public R visit(chalmersbot.Absyn.SubjectList p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectListElement p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.SubjectLst p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }
/* SubjectWrd */
    public R visit(chalmersbot.Absyn.SubjectBasic p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectSpecialWord p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectDeterminant p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectSmallWord p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectPronoun p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectPeriod p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectPeriodNr p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectName p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectNumber p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectPreposition p, A arg) { return visitDefault(p, arg); }
    public R visit(chalmersbot.Absyn.SubjectAdjective p, A arg) { return visitDefault(p, arg); }
    public R visitDefault(chalmersbot.Absyn.SubjectWrd p, A arg) {
      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
    }

}
